

#include <iostream>


class TestA {

    public:
        TestA() { std::cout << "TestA constructor" << std::endl;}
        ~TestA() { std::cout << "TestA ~destructor" << std::endl;}
        void print() {

        }
};


class TestB {

    public:
        TestB() { std::cout << "TestB constructor" << std::endl;}
        ~TestB() { std::cout << "TestB ~destructor" << std::endl;}
        void print() {

        }
};

void test_case1() {
    TestA aa;
    abort();
    aa.print();
}

void test_case2() {

    TestA aa;
    exit(0);
    aa.print();
}

void test_case3() {

    TestA aa;
    std::terminate();
    aa.print();
}

TestB bb;


int main() {

    bb.print();

    //test_case1();
    //test_case2();
    test_case3();

    return  0;
}